10 REM ********************** 20 REM * * 30 REM * ROEMISCHE ZAHLEN * 40 REM * * 50 REM * (W) J.BAUMM * 60 REM * (C) 64'ER 1988 * 70 REM * * 80 REM ********************** 90 REM 100 POKE 53280,2 110 POKE 53281,7 120 POKE 646,0 130 REM 140 REM MENUE 150 REM 160 DIM R(13),R$(13) 170 : 180 PRINT "[147]64'ER":FA=0 190 PRINT TAB(7)"ROEMISCH --> DEZIMAL [1]" 200 PRINT TAB(7)"DEZIMAL --> ROEMISCH [2]" 210 PRINT TAB(7)"E N D E --> [3]" 220 GET T$:IF T$<"1" OR T$>"3" THEN 220 230 T=VAL (T$) 240 ON TGOTO 260,570,1180 250 REM 260 REM ROEMISCH -> DEZIMAL 270 REM 280 Z1=0:Z2=0:Z3=0:DC=0:FG=0:R$="" 290 P1=0:P2=0:P3=0:P4=0:P5=0:P6=0 300 PRINT "[147]":FA=1 310 INPUT " ROEMISCHE ZAHL";RO$ 320 FOR I=LEN (RO$) TO 1 STEP -1 330 R$=MID$ (RO$,I,1) 340 : 350 IF R$<>"I" AND R$<>"V" AND R$<>"X" AND R$<>"L" AND R$<>"C" THEN Y=0:GOTO 370 360 Y=1 370 IF Y=0 AND R$<>"D" AND R$<>"M" THEN:GOSUB 910:GOTO 260 380 IF R$="I" THEN R=1:P1=P1+1:IF Z1=1 THEN R=-1 390 IF R$="V" THEN R=5:Z1=1:P2=P2+1 400 IF R$="X" THEN R=10:Z1=1:P3=P3+1:IF Z2=1 THEN R=-10 410 IF R$="L" THEN R=50:Z2=1:P4=P4+1 420 IF R$="C" THEN R=100:Z2=1:P5=P5+1:IF Z3=1 THEN R=-100 430 IF R$="D" THEN R=500:Z3=1:P6=P6+1 440 IF R$="M" THEN R=1000:Z3=1 450 DC=DC+R 460 NEXT I 470 GOSUB 640 480 REM 490 REM VERGLEICH 500 REM 510 IF RO$<>RM$ THEN GOSUB 910 520 IF FG=1 THEN 260 530 GOSUB 990 540 GOSUB 1090 550 IF A$="J" THEN 260 560 GOTO 180 570 GOSUB 590 580 REM 590 REM DEZIMAL -> ROEMISCH 600 REM 610 :FA=2 620 INPUT "[147] DEZIMALE ZAHL";D:DE=D 630 IF D<0 OR D>240000 THEN GOSUB 940:GOTO 620 640 IF FA=1 THEN D=DC 650 FOR I=1 TO 13 660 READ DA,DA$ 670 R(I)=INT (D/DA) 680 D=D-(R(I)*DA) 690 R$="" 700 IF R(I)>1 THEN GOSUB 860:GOTO 720 710 IF R(I)>0 THEN R$(I)=DA$ 720 NEXT I 730 REM 740 REM ROEMISCHE ZAHL 750 REM 760 FOR I=1 TO 13 770 RM$=RM$+R$(I):R$(I)="" 780 NEXT I 790 IF FA=1 THEN 820 800 GOSUB 990 810 IF FA=2 THEN 830 820 RETURN 830 GOSUB 1090 840 IF A$="J" THEN GOTO 570 850 GOTO 180 860 FOR J=1 TO R(I) 870 R$(I)=R$(I)+DA$ 880 NEXT J 890 RETURN 900 REM 910 REM FALSCHE EINGABE 920 REM 930 FG=1 940 PRINT " EINGABEFEHLER!" 950 FOR X=1 TO 200:NEXT X 960 RESTORE:RM$="":RO$="" 970 RETURN 980 REM 990 REM PRINT 1000 REM 1010 IF FA=1 THEN 1030 1020 IF FA=2 THEN 1050 1030 PRINT " ";RO$;" =";DC 1040 GOTO 1070 1050 PRINT " ";DE;"= ";RM$ 1060 RESTORE:RM$="" 1070 RETURN 1080 REM 1090 REM WIEDERHOLUNG 1100 REM 1110 PRINT " NOCHMAL (J/N)" 1120 GET A$:IF A$<>"J" AND A$<>"N" THEN 1120 1130 RESTORE:RO$="":RM$="" 1140 RETURN 1150 DATA 1000,"M",900,"CM",500,"D",400,"CD",100,"C" 1160 DATA 90,"XC",50,"L",40,"XL",10,"X",9,"IX",5,"V",4,"IV",1,"I" 1170 REM 1180 END